#include "led.h"
#include "work.h"
#include "temp.h"

extern uint8_t Work_Mode,Work_Strength,Current_Temp,off_cnt2,Error_State;
extern uint16_t VDD_Voltage;
uint8_t power_cnt=0,flash_cnt=0,flash_cnt1=0;
extern boolean_t Touch_OK,life_mode,age_mode;
extern boolean_t Trigger_Continuous,efficiency_error;
boolean_t flash_f,flash_f1,flash_f2;

/**********************************
 *	10ms 运行1次 
     1. 没有接触的负载时，头灯指示灯熄灭，模式灯闪烁
	 2. 接触到负载后，头灯指示灯常亮 + ，模式灯常亮
 ********************************/ 
void LED_Handle()
{
	flash_cnt++;
	if(flash_cnt == 40){
		flash_f1^=1;
	}	
	if(flash_cnt > 79){
		flash_cnt = 0;
		flash_f1^= 1;
		flash_f^= 1;
	}
	if(Work_Mode){
		
		if((life_mode)){	//寿命测试 头灯闪烁+ tp指示灯闪烁
			if(flash_f){
				LED7_ON; LED8_ON; LED_EN_ON;	
			}
			else{
				LED7_OFF; LED8_OFF; LED_EN_OFF;	
			}
		}
		else if(age_mode){  // 产线老化测试 头灯常亮 + tp指示灯闪烁
			flash_f ? LED7_ON:LED7_OFF;
			LED_EN_ON;
		}
		else{				// 正常模式显示
			Touch_OK? LED_EN_ON:LED_EN_OFF;
			Trigger_Continuous?LED7_ON:LED7_OFF;
		}

		switch(Work_Mode){
			case 1:
				if(life_mode == 0){
					LED8_OFF;
				}
				LED5_OFF; LED4_OFF;
				(flash_f&&(Touch_OK==0))?LED6_OFF:LED6_ON;
				break;	
			case 2:
				if(life_mode == 0){
					LED8_ON;
				} 
				LED6_OFF; LED4_OFF;
				(flash_f&&(Touch_OK==0))?LED5_OFF:LED5_ON;
				break;
			case 3:
				if(life_mode == 0){
					LED8_ON;
				} 
				LED6_OFF; LED5_OFF;
				(flash_f&&(Touch_OK==0))?LED4_OFF:LED4_ON;
				break;
			default:
				break;
		}

		switch(Work_Strength){
			case 0:LED3_ON;LED2_OFF;LED1_OFF;break;
			case 1:LED3_ON;LED2_ON;LED1_OFF;break;
			case 2:LED3_ON;LED2_ON;LED1_ON;break;
			default:break;
		}
	}
	else{
		if(power_cnt<100){
			power_cnt++;
			LED1_ON; LED2_ON; LED3_ON; LED4_ON;
			LED5_ON; LED6_ON; LED7_ON; LED8_ON;
		}
		else{
			if(Error_State){
				if(flash_f1){
					(Error_State&TEMP_OVER)?LED8_ON:LED8_OFF;		// 最上面数第1个灯，tp指示灯用于指示 TEMP_OVER
					(Error_State&NTC_ERROR)?LED7_ON:LED7_OFF;		// 从上面数第2个灯，连闪指示灯用于指示 NTC_ERROR

					(Error_State&INPUT_ERROR)?LED6_ON:LED6_OFF;     // 从上面数第3个灯，模式1指示灯用于指示 INPUT_ERROR
					(Error_State&FAN_ERROR)?LED5_ON:LED5_OFF;       // 从上面数第4个灯，模式2指示灯用于指示 FAN_ERROR
					(Error_State&CHARGE_SPEED_ERROR)?LED4_ON:LED4_OFF;  // 从上面数第5个灯，模式3指示灯用于指示 CHARGE_SPEED_ERROR

					(Error_State&CURRENT_ERROR)?LED3_ON:LED3_OFF;   // 从上面数第6个灯，档位1指示灯用于指示 CURRENT_ERROR
					(Error_State&EMS_ERROR)?LED2_ON:LED2_OFF;		// 从上面数第7个灯，档位2指示灯用于指示 EMS_ERROR 
					(Error_State&VOLTAGE_ERROR)?LED1_ON:LED1_OFF;   // 从上面数第8个灯，档位2指示灯用于指示 VOLTAGE_ERROR 

					if(flash_f2){
						flash_f2 = 0;
						flash_cnt1++;
						if(flash_cnt1 > 30){
							flash_cnt1 = 0;
							if((life_mode == 0)&&(age_mode == 0)){
								if(Error_State&FAN_ERROR){
									off_cnt2=60;
								}
														//���������ر�
								Error_State&=~FAN_ERROR;
								Error_State&=~CHARGE_SPEED_ERROR;
								Error_State&=~CURRENT_ERROR;
								Error_State&=~EMS_ERROR;
								Error_State&=~VOLTAGE_ERROR;
							}
						}
					}
				}
				else{
					flash_f2 = 1;
					LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF;
					LED5_OFF; LED6_OFF; LED7_OFF; LED8_OFF;
				}
			}
			else{
				flash_cnt1=0;
				LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF;
				LED5_OFF; LED6_OFF; LED7_OFF; LED8_OFF;
			}
		}
	}
}
